WebAssembly

WebAssembly ist eine Art von Code, die in modernen Web-Browsern ausgeführt werden kann. Es handelt sich um eine Low-Level-Assembler-ähnliche Sprache mit einem kompakten Binärformat, das nahezu native Leistung bietet und Sprachen wie C/C++, C# und Rust ein Kompilationsziel bietet, sodass sie im Web laufen können. Es ist auch so konzipiert, dass es zusammen mit JavaScript ausgeführt werden kann, damit beide zusammenarbeiten können.

WebAssembly wurde entwickelt, um JavaScript zu ergänzen und daneben ausgeführt zu werden – mit den WebAssembly JavaScript-APIs können Sie WebAssembly-Module in eine JavaScript-App laden und Funktionalität zwischen beiden teilen. Dies ermöglicht es Ihnen, die Leistung und Leistung von WebAssembly sowie die Ausdruckskraft und Flexibilität von JavaScript in derselben App zu nutzen, selbst wenn Sie nicht wissen, wie man WebAssembly-Code schreibt.

WebAssembly hat große Auswirkungen auf die Web-Plattform, nicht nur, weil es einen Weg bietet, Code, der in mehreren Sprachen geschrieben wurde, mit nahezu nativer Geschwindigkeit im Web auszuführen, sondern auch, weil es ermöglicht, Client-Apps im Web auszuführen, die zuvor nicht möglich waren.

Und das Beste daran ist, dass es als Webstandard über die W3C WebAssembly Working Group und Community Group mit aktiver Teilnahme aller großen Browser-Hersteller entwickelt wird.

Leitfäden

Die WebAssembly-Leitfäden behandeln Themen wie hochrangige Konzepte, Kompilierung aus verschiedenen Sprachen, die textuelle Darstellung des Wasm-Binärformats und wie WebAssembly ausgeführt wird.

WebAssembly-Konzepte

Fangen Sie an, indem Sie die hochrangigen Konzepte hinter WebAssembly lesen — was es ist, warum es so nützlich ist, wie es in die Web-Plattform (und darüber hinaus) passt und wie es genutzt wird.

Ein neues C/C++-Modul nach WebAssembly kompilieren

Wenn Sie Code in C/C++ geschrieben haben, können Sie ihn mit einem Tool wie Emscripten in Wasm kompilieren. Schauen wir uns an, wie es funktioniert.

Ein bestehendes C-Modul nach WebAssembly kompilieren

Ein Hauptanwendungsfall für WebAssembly besteht darin, das bestehende Ökosystem von C-Bibliotheken zu nutzen und Entwicklern zu ermöglichen, sie im Web zu verwenden.

Von Rust zu WebAssembly kompilieren

Wenn Sie Rust-Code geschrieben haben, können Sie ihn in WebAssembly kompilieren! Dieses Tutorial führt Sie durch alles, was Sie wissen müssen, um ein Rust-Projekt zu Wasm zu kompilieren und in einer bestehenden Web-App zu verwenden.

WebAssembly-Code laden und ausführen

Nachdem Sie ein Wasm-Modul haben, behandelt dieser Artikel, wie man es abruft, kompiliert und instanziiert und kombiniert die WebAssembly JavaScript API mit den Fetch oder XHR APIs.

Die WebAssembly JavaScript API verwenden

Sobald Sie ein Wasm-Modul geladen haben, möchten Sie es nutzen. In diesem Artikel zeigen wir Ihnen, wie Sie WebAssembly über die WebAssembly JavaScript API verwenden.

Exportierte WebAssembly-Funktionen

Exportierte WebAssembly-Funktionen sind die JavaScript-Reflexe der WebAssembly-Funktionen, die das Aufrufen von WebAssembly-Code aus JavaScript ermöglichen. Dieser Artikel beschreibt, was sie sind.

Das WebAssembly-Textformat verstehen

Dieser Artikel erklärt das Wasm-Textformat. Dies ist die niedrigstufige textuelle Darstellung eines Wasm-Moduls, die in den Entwicklerwerkzeugen des Browsers beim Debuggen angezeigt wird.

WebAssembly-Textformat in Wasm konvertieren

Dieser Artikel bietet eine Anleitung, wie man ein in Textformat geschriebenes WebAssembly-Modul in ein Wasm-Binärformat konvertiert.

API-Referenz

WebAssembly-Befehlsreferenz

Referenzdokumentation mit interaktiven Beispielen für die Menge der WebAssembly-Operatoren.

WebAssembly-JavaScript-Schnittstelle

Dieses Objekt fungiert als Namespace für alle WebAssembly-bezogenen Funktionen.

WebAssembly.Global()

Ein WebAssembly.Global-Objekt stellt eine globale Variableninstanz dar, die sowohl aus JavaScript zugänglich ist als auch über eine oder mehrere WebAssembly.Module-Instanzen importierbar/exportierbar ist. Dies ermöglicht das dynamische Verknüpfen mehrerer Module.

WebAssembly.Module()

Ein WebAssembly.Module-Objekt enthält zustandslosen WebAssembly-Code, der bereits vom Browser kompiliert wurde und effizient mit Workern geteilt und mehrfach instanziiert werden kann.

WebAssembly.Instance()

Ein WebAssembly.Instance-Objekt ist eine zustandsbehaftete, ausführbare Instanz eines Module. Instance-Objekte enthalten alle exportierten WebAssembly-Funktionen, die das Aufrufen von WebAssembly-Code aus JavaScript ermöglichen.

WebAssembly.compile()

Die WebAssembly.compile()-Funktion kompiliert WebAssembly-Binärcode in ein WebAssembly.Module-Objekt.

WebAssembly.compileStreaming()

Die WebAssembly.compileStreaming()-Funktion kompiliert ein WebAssembly.Module direkt aus einer gestreamten Quelle.

WebAssembly.instantiate()

Die WebAssembly.instantiate()-Funktion ermöglicht das Kompilieren und Instanziieren von WebAssembly-Code.

WebAssembly.instantiateStreaming()

Die WebAssembly.instantiateStreaming()-Funktion ist die Haupt-API zum Kompilieren und Instanziieren von WebAssembly-Code und gibt sowohl ein Module als auch seine erste Instance zurück.

WebAssembly.validate()

Die WebAssembly.validate()-Funktion validiert ein gegebenes typisiertes Array von WebAssembly-Binärcode.

WebAssembly.Memory()

Ein WebAssembly.Memory-Objekt ist ein erweiterbarer ArrayBuffer, der die rohen Bytes des von einer Instance zugegriffenen Speichers hält.

WebAssembly.Table()

Ein WebAssembly.Table-Objekt ist ein erweiterbares typisiertes Array von undurchsichtigen Werten wie Funktionsreferenzen, auf die von einer Instance zugegriffen wird.

WebAssembly.Tag()

Das WebAssembly.Tag-Objekt definiert eine Art von WebAssembly-Ausnahme, die zu/von WebAssembly-Code geworfen werden kann.

WebAssembly.Exception()

Das WebAssembly.Exception-Objekt stellt eine Laufzeitausnahme dar, die von WebAssembly zu JavaScript oder von JavaScript zu einem WebAssembly-Ausnahmebehandlung geworfen wird.

WebAssembly.CompileError()

Erstellt ein neues CompileError-Objekt von WebAssembly.

WebAssembly.LinkError()

Erstellt ein neues LinkError-Objekt von WebAssembly.

WebAssembly.RuntimeError()

Erstellt ein neues RuntimeError-Objekt von WebAssembly.

Beispielprojekte

Spezifikationen

Specification
WebAssembly JavaScript Interface
# webassembly-namespace
WebAssembly JavaScript Interface
# ref-for-syntax-numtype①⓪
Unknown specification
Unknown specification
Unknown specification
Unknown specification
WebAssembly Core: Garbage Collection
# garbage-collection①
Unknown specification
Unknown specification
WebAssembly JavaScript Interface
# dom-globaldescriptor-mutable
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification

Browser-Kompatibilität

Siehe auch